package com.young.weixin.model.enums;


/**
 * 事件类型
 *
 * @author wangjy
 * @date 2021/10/07 22:18:06
 */
public enum EWxEventTypeEnum {
    /**
     * 订阅
     */
    SUBSCRIBE("subscribe", "订阅"),
    /**
     * 取消订阅
     */
    UNSUBSCRIBE("unsubscribe", "取消订阅"),
    /**
     * 用户扫描二维码(已关注时)
     * 如果用户还未关注公众号，则用户可以关注公众号，关注后微信会将带场景值关注事件推送给开发者(也就是上面的订阅事件,只是多了EventKey和Ticket参数)。
     */
    SCAN("SCAN", "用户扫描二维码(已关注时)"),
    /**
     * 用户同意上报地理位置后，每次进入公众号会话时，都会在进入时上报地理位置，或在进入会话后每5秒上报一次地理位置，公众号可以在公众平台网站中修改以上设置。
     * 上报地理位置时，微信会将上报地理位置事件推送到开发者填写的URL。
     */
    LOCATION("LOCATION", "上报地理位置事件"),
    /**
     * 点击菜单拉取消息时的事件推送
     */
    CLICK("CLICK", "点击菜单拉取消息时的事件推送"),
    /**
     * 点击菜单跳转链接时的事件推送
     */
    VIEW("VIEW", "点击菜单跳转链接时的事件推送"),
    ;

    /**
     * 类型
     */
    public final String type;
    /**
     * 说明
     */
    public final String text;

    /**
     * 匹配枚举
     * @param type
     * @return
     */
    public static EWxEventTypeEnum of(String type) {
        for (EWxEventTypeEnum e : EWxEventTypeEnum.values()) {
            if (e.eq(type)) {
                return e;
            }
        }
        return null;
    }

    /**
     * 判断相等
     *
     * @param type
     * @return true表示相等
     */
    public boolean eq(String type) {
        return this.type.equals(type);
    }

    /**
     * 判断不相等
     *
     * @param type
     * @return true表示不相等
     */
    public boolean notEq(String type) {
        return !this.eq(type);
    }

    EWxEventTypeEnum(String type, String text) {
        this.type = type;
        this.text = text;
    }
}
